Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
每日一套件的第 23 天,請跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!
Whenever 跟之前的 Sidekiq 一樣,都是我先前想介紹很久的套件,他們都是專案中後期可以搭配使用到的套件。但對於新手來說,都需要先研究很多內容。所以我放在蠻後面才來講。
Whenever 就如同它的名字,主要功能是處理定期任務和分配任務執行時間。它可以讓你在 Rails 中簡單設定 cron ,而不需要親自手寫 cron 語法。恩~就是這裡開始就要超展開囉~
Cron 是一個 Deamon,是一款在 UNIX-like 作業系統下(ex. Linux),基於時間做任務管理的系統。讓使用者可以透過 cron 在固定時間、日期、不同間隔,執行定期任務(可以是命令或指令)。
Deamon 可以理解就是背景常駐程式,是一種在 UNIX-like 作業系統下,它會在背景悄悄運作,不在使用者的直接控制下,等待特定事件或條件發生時啟動。
UNIX 是一種作業系統,是一個多使用者、多工作業系統,支援多種處理器架構,按照作業系統的分類,屬於分時作業系統。
而 UNIX-like 中文翻作 "類UNIX",個人覺得翻的還是有點不到位,但大概就是這個意思。
指各種 UNIX 的衍生系統,有的是自由軟體,有的是私有軟體,但都相當程度地繼承了原始 UNIX 的特性,有許多相似處,並且都在一定程度上遵守 POSIX 規範。
Portable Operating System Interface,縮寫為 POSIX,中文譯做 "可移植作業系統介面"。
哈哈哈,我們不要再無限上綱下去了,這樣會沒完沒了。
大家有興趣再自己追查下去,我自己的待讀清單,也已經是多到炸裂的狀態。
使用 Whenever,你可以更容易地安排定期任務,例如備份資料、發送 email 通知、清理 log 文件等。
起手式~
$ bundle add whenever
接著,在專案資料夾底下,終端機執行。
$ bundle exec wheneverize .
這個指令會在根目錄中產生一個 schedule.rb
,它就是的定期任務的設定檔。
例如,要每天執行一次任務,你可以這樣寫:
every 1.day, at: '4:30 am' do
runner 'MyModel.my_method'
end
表示每天 4:30 am 會執行 MyModel.my_method
的方法。
every 1.day, at: '4:30 am' do
runner '鐵人賽.發文'
end
這樣大家就更懂了吧。
還可以定義更複雜的定期任務,包括每小時、每週、每月等不同的間隔頻率。
當設定完了定期任務後,執行這個命令將它轉為 cron 作業:
$ whenever --update-crontab
這就會把你的定期任務加到系統的 **cron **表中,使系統按照你的設定自動運作,超方便。
Whenever 是一個非常有趣的工具,大家可以自己玩玩看。
我們明天見!